import {
	ElMessage,
	ElMessageBox,
	ElLoading
} from 'element-plus';

// pinia
import {
	useUserStore,
	// useConfigStore,
} from '@/stores/index.js';

import config from './config'
import router from '@/router';

//	工具库
export const util = {

	// 获取时间
	getTime(time) {
		let arr = time.split(' ');
		return arr[0];
	},

	// 去登录
	GoLogin() {
		// 先默认登录
		// return true;
		const {
			userId,
			token
		} = useUserStore();

		try {
			if (!token) {
				throw Error('1')
			}
			return true;
		} catch (e) {
			// this.alert('请先登录')
			util.to('/login')
			return false
		}
	},

	// 处理 content // 后台人员要求 前端处理
	disposeContent(content) {
		if (!content) {
			console.log('缺少content');
			return "";
		};
		content = content.replace(/\/dev-api/g, config.host)
		content = content.replace(/\/prod-api/g, config.host)
		// content = content.replace(/<img /g,'<img style="width: 100%;"')
		return content
	},

	// 下载
	async downloadFile(blob, fileName) {
		// const arr = resource.split('/')
		// const length = arr.length;
		// if (!length) return;
		// const fileName = arr[length - 1];
		let downloadElement = document.createElement("a");
		let href = window.URL.createObjectURL(blob);
		downloadElement.href = href;
		downloadElement.download = fileName;
		document.body.appendChild(downloadElement);
		downloadElement.click();
		document.body.removeChild(downloadElement);
		window.URL.revokeObjectURL(href);
	},

	// 获取本地图片
	getImageUrl(url) {
		return new URL(`../assets/img/${url}`, import.meta.url).href;
	},

	// 获取网络图片
	getHttpImageUrl(url) {
		if (url.indexOf("http") > -1 || url == '/static/avatar.png') return url;
		return config.host + url;
	},

	// 加载效果
	showLoading() {
		ElLoading.service({
			lock: true,
			text: '加载中...',
			background: "rgba(0,0,0,0.4)",
		});
	},

	// 关闭加载效果
	hideLoading() {
		ElLoading.service({}).close();
	},

	//	弹窗
	alert(obj) {

		//	这个地方说白了就是 如果只是想提示一句话一个文本的话 就只是弹个小tips
		if (typeof obj == "string" || typeof obj == "number") {
			ElMessage({
				type: "success",
				message: obj,
				duration: 2000,
				showClose: false,
			});
			return;
		}

		//	标题
		obj.title = obj.title ? obj.title : "系统提示";

		//	提示内容
		obj.value = obj.value ? obj.value : "提示信息";

		//	跳转页面
		obj.url = obj.url ? obj.url : "";

		//	确定文本
		obj.confirmText = obj.confirmText ? obj.confirmText : "确定";

		//	取消按钮
		obj.cancel = obj.cancel === false ? false : true;

		//	是否关闭当前页面
		obj.close = obj.close ? obj.close : false;

		//	取消文本
		obj.cancelText = obj.cancelText ? obj.cancelText : "取消";

		//	
		ElMessageBox({
			title: obj.title,
			message: obj.value,
			confirmButtonText: obj.confirmText,
			cancelButtonText: obj.cancelText,
			// type:"success",
			showCancelButton: obj.cancel,
			confirmButtonClass: "primary",
			showClose: false,
			closeOnClickModal: false,
			center: false,
		}).then((rs) => {
			var res = {};
			res.confirm = true;
			obj.success ? obj.success(res) : function() {}
		}).catch((res) => {
			var res = {};
			res.cancel = true;
			obj.success ? obj.success(res) : function() {}
		})
	},

	//	get参数拼接
	setParam(data) {
		let url = '';
		for (var k in data) {
			let value = data[k] !== undefined ? data[k] : '';
			url += `&${k}=${value}`
		}
		return url ? url.substring(1) : ''
	},

	//	get参数拼接url
	setUrl(url, data) {
		return url += (url.indexOf('?') < 0 ? '?' : '') + util.setParam(data);
	},

	//	倒计时
	countDownd(endtime) {

		if (!endtime) {
			return;
		}

		var timestamp = Date.parse(new Date());

		timestamp = timestamp / 1000;

		var time = (endtime - timestamp); //距离结束的毫秒数

		// 获取天、时、分、秒
		let day = util.timeFormin(parseInt(time / (60 * 60 * 24)));
		let hou = util.timeFormin(parseInt(time % (60 * 60 * 24) / 3600));
		let min = util.timeFormin(parseInt(time % (60 * 60 * 24) % 3600 / 60));
		let sec = util.timeFormin(parseInt(time % (60 * 60 * 24) % 3600 % 60));

		var str = "";

		if (day) {
			str += day + "天";
		}

		if (hou || hou == 0) {
			if (hou > 9) {
				str += hou + ":";
			} else {
				str += "0" + hou + ":";
			}
		} else {
			str += "00:";
		}

		if (min || min == 0) {
			if (min > 9) {
				str += min + ":";
			} else {
				str += "0" + min + ":";
			}
		} else {
			str += "00:";
		}

		if (sec) {
			if (sec > 9) {
				str += sec;
			} else {
				str += "0" + sec;
			}
		} else {
			str += "00";
		}

		return str;
	},

	// 
	time() {
		return Date.parse(new Date()) / 1000;
	},

	// 跳转
	to(url, param) {
		if (!url) {
			util.alert('暂无此页面', 'info');
			return
		}
		param = param ? param : {};

		// window.open(util.WEB_URL + url);
		// return

		router.push({
			path: url,
			query: param,
		})
	},

	getMYD(name = "formattedDateTime", timestamp = 0) {

		let currentTime = timestamp ? new Date(timestamp) : new Date(); // 获取当前时间

		let year = currentTime.getFullYear(); // 获取年份
		let month = currentTime.getMonth() + 1; // 获取月份（注意月份是从0开始计数的，所以需要加1）
		let day = currentTime.getDate(); // 获取日期
		let hours = currentTime.getHours(); // 获取小时
		let minutes = currentTime.getMinutes(); // 获取分钟
		let seconds = currentTime.getSeconds(); // 获取秒数
		let milliseconds = currentTime.getMilliseconds(); // 获取毫秒数
		let formattedDate =
			`${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`; // 格式化时间为 YYYY-MM-DD
		let YMD = `${year}年${month.toString().padStart(2, '0')}月${day.toString().padStart(2, '0')}日`; // 格式化时间为 年月日
		let formattedTime =
			`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; // 格式化时间为 HH:MM:SS

		let formattedTime2 = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
		let formattedDateTime = `${formattedDate} ${formattedTime}`; // 格式化时间为 YYYY-MM-DD HH:MM:SS
		let formattedDateUS =
			`${month.toString().padStart(2, '0')}/${day.toString().padStart(2, '0')}/${year}`; // 格式化时间为 MM/DD/YYYY
		let formattedTime12Hour =
			`${hours % 12 || 12}:${minutes.toString().padStart(2, '0')} ${hours < 12 ? 'AM' : 'PM'}`; // 格式化时间为 HH:MM AM/PM

		const data = {
			year,
			month,
			day,
			hours,
			minutes,
			seconds,
			milliseconds,
			formattedDate,
			formattedTime,
			formattedTime2,
			formattedDateTime,
			formattedDateUS,
			formattedTime12Hour,
			YMD
		}
		return data[name];
	},

	// 获取当前周?
	getWeek() {
		// 创建一个新的日期对象，默认会使用当前的日期和时间
		const now = new Date();

		// 使用 getDay 方法获取今天是星期几
		const dayOfWeek = now.getDay();

		// 映射数字到对应的星期名称
		const days = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];

		// 输出今天的星期名称
		return days[dayOfWeek]
	},


}

export default util;